﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace PedesTrainProject.Core
{
    public interface ICoreGUI
    {
        void adjustPedestrians(KeyValuePair<int, int> amounts);
        Grid.Tile createTile(Grid.Road _road);
        void addTile(Grid.Tile _tile, System.Windows.Vector position);
        Grid.Road createRoad(string _name, string _skin, Grid.Directions direction);
        bool crossingPresent(System.Windows.Vector position);
        //void addLight(List<int> intervals, System.Windows.Vector position);
        List<int> getIntervals(System.Windows.Vector position);
        void setIntervals(List<int> intervals, System.Windows.Vector position);
        string getRoadName(System.Windows.Vector position);
        string getRoadSkin(System.Windows.Vector position);
        bool pedestrianCrossingPresent(System.Windows.Vector position);
        List<int> getPedestrianIntervals(System.Windows.Vector position);
        void setPedestrianIntervals(List<int> intervals, System.Windows.Vector position);
        //ICoreGUIRun startSimulation();
        void addInFlowFlag(List<KeyValuePair<DateTime, int>> _intervals, System.Windows.Vector _position);
        bool canSetInFlowFlag(System.Windows.Vector _position);
        List<KeyValuePair<DateTime, int>> getInFlowFlag(System.Windows.Vector _position);
        void setInitialLights(bool horizontal, System.Windows.Vector position);
        ICoreGUIRun startSimulation(Graphics e, PictureBox _pb, Bitmap drawArea, GUI.SimulationCreator _scGUI);
        bool inFlowFlagPresent(System.Windows.Vector _position);
        void setInFlowFlag(List<KeyValuePair<DateTime, int>> _intervals, System.Windows.Vector _position);
        void SaveGridLayout();
        Grid.Grid LoadGridLayout();
        List<Grid.Tile> GetTiles();
        bool SaveGridLayout(string filePath);
        bool LoadGridLayout(string filePath);
        void setStartTime(DateTime _startTime);
        void setEndTime(DateTime _endTime);
        DateTime getStartTime();
        DateTime getEndTime();
        Data.Statistics getStatistic();
       
    }
}
